package object;

public class ObjectDemo {
    public static void main(String[] args) {
/**
 *
 *调用Object类的equals,内部还是在使用==比较地址。没有参考意义
 *若相比较对象的属性值是否相同，我们认为Object类的equals()并不能满足要求
 * 因此常常需要重写equals（）
 * */
        Point p1  = new Point(100,500);
        Point p2  = new Point(100,500);
        System.out.println(p1==p2);//false
        System.out.println(p1.equals(p2));//true
        /**在Point中重写equals*/

        StringBuilder builder1 = new StringBuilder("hello");
        StringBuilder builder2 = new StringBuilder("hello");
        //StringBuilder类没有重写equals，因此调用的还是Object类的equals()比较地址
        System.out.println(builder1.equals(builder2));//false
        System.out.println(p1.equals(builder1));//false


        /**
         输入引用变量时默认调用Object类的toString()方法
         该方法返回的字符串格式为：类的全称@hashcode值
         但通常这个返回结果对我们的开发是没有意义的
         我们真正想输出的应该是对象的属性值
         我们认为Object类的toString（）并不能满足我们的需求
         因此我们常常重写toString（）来返回具体的属性值
         */
       /* Point p  = new Point(100,500);
        System.out.println(p);
        System.out.println(p.toString());*/


       /* Dog o1 = new Dog();
        Animal o2 = new Dog();
        Object o3 =new Dog();//向上造型--------所有的派生类都好使
        o3.equals(3);*/
    }
}
class Animal{}
class Dog extends Animal{}